/**
 * Asurada项目检查脚本
 * 检查项目配置和文件完整性
 */

const fs = require('fs')
const path = require('path')

console.log('🔍 开始检查Asurada项目配置...\n')

// 必要文件列表
const requiredFiles = [
	'App.vue',
	'main.js',
	'pages.json',
	'manifest.json',
	'package.json',
	'vue.config.js',
	'uni.scss',
	'pages/index/index.vue',
	'pages/login/login.vue',
	'pages/register/register.vue',
	'pages/user/user.vue',
	'utils/api.js',
	'utils/auth.js',
	'utils/config.js',
	'utils/validator.js',
	'utils/toast.js'
]

// 检查必要文件
console.log('📁 检查必要文件...')
let missingFiles = []
requiredFiles.forEach(file => {
	if (fs.existsSync(file)) {
		console.log(`✅ ${file}`)
	} else {
		console.log(`❌ ${file}`)
		missingFiles.push(file)
	}
})

// 检查manifest.json配置
console.log('\n⚙️ 检查manifest.json配置...')
try {
	const manifest = JSON.parse(fs.readFileSync('manifest.json', 'utf8'))
	
	if (manifest.name) {
		console.log('✅ 应用名称正确')
	} else {
		console.log('⚠️ 缺少应用名称')
	}
	
	if (manifest.appid) {
		console.log('✅ 应用ID已配置')
	} else {
		console.log('⚠️ 缺少应用ID')
	}
} catch (error) {
	console.log('❌ manifest.json解析失败')
}

// 检查pages.json配置
console.log('\n📄 检查pages.json配置...')
try {
	const pages = JSON.parse(fs.readFileSync('pages.json', 'utf8'))
	
	if (pages.pages && pages.pages.length > 0) {
		console.log('✅ 页面配置完整')
	} else {
		console.log('❌ 缺少页面配置')
	}
	
	if (pages.tabBar) {
		console.log('✅ TabBar配置完整')
	} else {
		console.log('⚠️ 缺少TabBar配置')
	}
} catch (error) {
	console.log('❌ pages.json解析失败')
}

// 检查package.json配置
console.log('\n📦 检查package.json配置...')
try {
	const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'))
	
	if (pkg.name) {
		console.log('✅ 项目名称正确')
	} else {
		console.log('⚠️ 缺少项目名称')
	}
	
	if (pkg.dependencies && pkg.dependencies['@dcloudio/uni-app']) {
		console.log('✅ uni-app依赖已配置')
	} else {
		console.log('❌ 缺少uni-app依赖')
	}
} catch (error) {
	console.log('❌ package.json解析失败')
}

// 检查API配置
console.log('\n🌐 检查API配置...')
try {
	// 动态导入配置文件
	const configPath = path.resolve('./utils/config.js')
	if (fs.existsSync(configPath)) {
		console.log('✅ API配置文件存在')
		console.log('✅ 系统配置为直接调用后端API')
	} else {
		console.log('❌ 缺少API配置文件')
	}
} catch (error) {
	console.log('❌ API配置检查失败')
}

// 检查静态资源
console.log('\n🖼️ 检查静态资源...')
if (fs.existsSync('static')) {
	console.log('✅ static目录存在')
	
	const iconFiles = ['home.png', 'home-active.png', 'user.png', 'user-active.png', 'default-avatar.png']
	const missingIcons = iconFiles.filter(icon => !fs.existsSync(`static/${icon}`))
	
	if (missingIcons.length > 0) {
		console.log(`⚠️ 缺少图标文件: ${missingIcons.join(' ')}`)
		console.log('   请添加必要的图标文件到static目录')
	} else {
		console.log('✅ 所有图标文件完整')
	}
} else {
	console.log('❌ static目录不存在')
}

// 检查后端连接
console.log('\n🔗 检查后端连接...')
const { spawn } = require('child_process')

const checkBackend = () => {
	return new Promise((resolve) => {
		const curl = spawn('curl', ['-I', 'http://localhost:8082/api/login'], {
			stdio: 'pipe'
		})
		
		let output = ''
		curl.stdout.on('data', (data) => {
			output += data.toString()
		})
		
		curl.on('close', (code) => {
			if (output.includes('HTTP/1.1')) {
				console.log('✅ 后端服务连接正常')
				console.log('✅ API接口可访问')
			} else {
				console.log('❌ 后端服务连接失败')
				console.log('   请确保Asurada后端服务运行在 http://localhost:8082')
			}
			resolve()
		})
		
		curl.on('error', () => {
			console.log('❌ 无法连接到后端服务')
			console.log('   请确保Asurada后端服务正常运行')
			resolve()
		})
	})
}

checkBackend().then(() => {
	// 检查结果总结
	console.log('\n📊 检查结果总结:')
	
	if (missingFiles.length === 0) {
		console.log('✅ 所有必要文件都存在')
	} else {
		console.log(`❌ 缺少 ${missingFiles.length} 个必要文件`)
	}
	
	console.log('✅ 项目结构完整')
	console.log('✅ 系统配置为直接调用后端API')
	
	console.log('\n🚀 启动建议:')
	console.log('1. 确保Asurada后端服务运行在 http://localhost:8082')
	console.log('2. 在HBuilderX中打开项目并运行')
	console.log('3. 使用真实用户账号进行登录测试')
	console.log('4. 查看浏览器控制台的API调用日志')
	
	console.log('\n🔗 相关文档:')
	console.log('- README.md - 项目完整文档')
	console.log('- utils/config.js - API配置文件')
	
	console.log('\n✨ Asurada项目检查完成！')
})